package com.tuyrt.firstcode.kotlin.generics

/**
 * Created by tuyrt7 on 2021/4/12.
 *  泛型-协变 out: 泛型类MyClass<T>，其中 A是B 的子类型，MyClass<A> 是MyClass<B> 的子类型，则称 MyClass<T> 在
 *  泛型 T 上是协变的
 *  SDK使用协变示例： Kotlin List 在 泛型 E 上就是协变的
 */

class SimpleData<out T>(val data: T?) {

    fun get(): T? {
        return data
    }
}

open class MyClazz
class B : MyClazz()
class A : MyClazz()

fun main() {
    val a = A()
    val data = SimpleData<A>(a)
    handleMyData(data)
    val aData = data.get()
}

fun handleMyData(data: SimpleData<MyClazz>) {
   val aData = data.get()
}

